iT邦幫忙

2024 iThome 鐵人賽

DAY 15
0
佛心分享-刷題不只是刷題

轉生理工組後從零開始的leetcode刷題系列 第 15

day-15[medium.2593]find score of array after marking all element

  • 分享至 

  • xImage
  •  

You are given an array nums consisting of positive integers.

Starting with score = 0, apply the following algorithm:

Choose the smallest integer of the array that is not marked. If there is a tie, choose the one with the smallest index.
Add the value of the chosen integer to score.
Mark the chosen element and its two adjacent elements if they exist.
Repeat until all the array elements are marked.
Return the score you get after applying the above algorithm.


題目要我們對一組數組nums進行以下運算,記錄到score中最後返回:

  • 選擇數組中未被標記的最小整數。如果有多個最小值,選擇最靠左的。
  • 選中的數值加到score中。
  • 選中的數以及它的相鄰兩個元素標記起來,這些元素在後續過程中不能選。

我的解題思路:

  1. 總覺得有點似曾相識!?
  2. 做一個布林值表示標記與否
  3. 從nums找出最小且沒有被標記的數字,加到score
  4. 沒有數能選之後返回score

public class Solution {
    public int findScore(int[] nums) {
        int n = nums.length;
        boolean[] marked = new boolean[n]; 
        int score = 0;

        while (true) {
            int min = -1; // 記錄最小值的序號
            // 開始遍歷數列
            for (int i = 0; i< n ; i++) {
                if (!marked[i]) { 
                    if (min == -1 || nums[i] < nums[min]) {
                        min = i;
                    }
                }
            }
            if (min == -1) {
                break;
            }
            
            score += nums[min];
            marked[min] = true;
            if (min > 0) {
                marked[min - 1] = true; // 標記左邊
            }
            if (min < n - 1) {
                marked[min + 1] = true; // 標記右邊
            }
        }
        return score;
    }
}


有點忘記是跟哪次的題目有點像了,總之今天的題目比昨天輕鬆太多了...
改了一些小錯誤之後成功結束這回合。
https://ithelp.ithome.com.tw/upload/images/20240930/20169432tsflJSxfdN.png


上一篇
day-14[medium.2029]stone game IX
下一篇
day-16[medium.2545]sort the student by their Kth score
系列文
轉生理工組後從零開始的leetcode刷題30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言